Elder Scrolls IV: Oblivion Tweak Guide
[Page 9] Advanced Tweaking (Pt.2)
[Audio Variables]
bDSoundHWAcceleration=1 - If set to 1, uses hardware acceleration (i.e. your sound card) to reproduce audio. This provides the best audio quality, however if you are having problems such as odd crashes, you can try a value of 0 to disable hardware sound acceleration.
bMusicEnabled=1 - If set to 0, turns off all background music. This will detract from the atmosphere of the game, but can noticeably improve stuttering on some systems, as background music dynamically loads throughout the game.
bSoundEnabled=1 - Turns off all sound effects, but does not affect music. This would be an extreme way of gaining performance or reducing crashes and is not recommended for anything other than troubleshooting purposes.
fMainMenuMusicVolume=0.6000 - The main menu music volume can't be adjusted anywhere in the game, except by using the Master Volume slider (which then affects all sound/music). To alter the menu music volume independently, change the value here.
iMaxImpactSoundCount=32 - This option determines the maximum number of channels used for different sound effects. Reduce it 24 or 16 to remove some of the sound effects in return for a performance boost and stuttering reduction. Note however that this setting can crash your system if set too low, particularly with hardware acceleration enabled.
[Memory, Loading & Multithreading Variables]
All users should implement the Memory and Loading tweaks (with appropriate values) below, but the Multithreading tweaks are best used on Dual Core or HyperThreading CPUs.
Memory Tweaks:
uInterior Cell Buffer=3
uExterior Cell Buffer=36
The above values determine how many cells (whether for interior or exterior areas) are buffered into RAM. Note that usually the value of the Exterior Cell Buffer variable is automatically set by the engine based on the size of the uGridstoLoad variable. The higher that variable is, the higher the engine will raise this value. However if you want to smooth out your FPS, try manually setting a higher value for both of these, depending on how much RAM you have. For 1GB I recommend doubling the values (6 and 72 respectively). For higher amounts of RAM, try raising them higher, however note that you should also raise the iPreloadSizeLimit value below.
iPreloadSizeLimit=26214400 - This setting appears to determine the maximum amount (in bytes) of RAM allowed for preloading game data. The higher the value, the more chance you have of reducing stuttering. The default value equates to around 25MB (divide the setting by 1024 to get KB, then by 1024 again to get MB). For those with 1GB of system RAM, try doubling the variable to 52428800. For those with 2GB, try double again at 104857600 (100MB). You can raise these values even further to experiment, however note that raising this to a large amount doesn't force all the game data to sit in RAM.
bPreemptivelyUnloadCells=0 - If set to 1, this setting attempts to unload cell data it thinks you won't need. In my experience this setting seemed to help smooth out framerate even further, even though I have 2GB of RAM, so I recommend you try it.
bSelectivePurgeUnusedOnFastTravel=0 - If set to 1, this option removes a range of unnecessary data when you Fast Travel to another location. This can help keep memory usage down, so it is recommended you set this to 1.
Loading Tweaks:
bUseHardDriveCache=1 - Although Windows should be using your hard drive cache by default for all drive operations, set this variable to 1 just in case. This should help reduce stuttering.
bBackgroundLoadLipFiles=1
bLoadBackgroundFaceGen=1
bBackgroundCellLoads=1
bLoadHelmetsInBackground=1
iBackgroundLoadLoading=1
bBackgroundPathing=1
All of the above options relate to background loading to attempt to smooth FPS and reduce stutter. I recommend setting them all to 1. This may increase some transitional loading times (e.g. loading cities, crossing indoors/outdoors), but should generally reduce random loading stutter as you wander around.
bUseBackgroundFileLoader=0 - This setting may improve stuttering performance on some machines if set to 1, but I have noticed that it can also cause crashes and long loading times for some people, so on balance I recommend leaving it at 0.
Multithreading Tweaks:
bUseThreadedBlood=1
bUseThreadedMorpher=1
bUseThreadedTempEffects=1
bUseThreadedParticleSystem=1
bUseMultiThreadedTrees=1
bUseMultiThreadedFaceGen=1
iNumHavokThreads=5
iThreads=9
iOpenMPLevel=10
All of the above settings seem to relate to the use of the GameBryo engine's multithreading capability (See Neat Stuff & Conclusion section). Multithreading splits tasks into 'threads' where possible, and runs them in parallel across both cores of Dual Core or HyperThreading (virtual dual core) CPUs to improve performance. Note that raising the values of the iThreads, iNumHavokThreads and iOpenMPLevel settings very high doesn't automatically mean it uses that many threads - it all depends on how many threads are actually possible based on the information being processed.
[Cell Visibility/Loading Variables]
uGridsToLoad=5 - Increasing the uGridsToLoad value (always in odd steps of 5,7,9,11 etc.) will increase the number of grids around the character in which full texture data will be loaded up and visible as he/she wanders around. This clearly improves visual quality - removing blurry distant LOD textures for example when set to 11 or above - however it also noticeably increases loading times and loading pauses, introduces visual anomalies (particularly around water areas) and reduces performance significantly. Interestingly, as uGridsToLoad increases, the system automatically increases the uExterior Cell Buffer value to accommodate the greater cell data. Furthermore, if you use an even value, the engine will automatically raise it to the nearest odd value (e.g. entering 10 means the engine will set it to 11). On balance the default value of 5 is a good compromise between performance and loading pauses.
Importantly: Instead of using the above variable to improve distant textures, particularly the blurry land textures, it is strongly recommended that you instead use the Landscape LOD Replacement Mods as detailed in the Patches & Mods section of this guide on Page 4. These mods provide far less of a performance decrease for a similar effect, and don't result in the types of glitches which altering the uGridsToLoad variable can bring with it.
uGridDistantTreeRange=15
uGridDistantCount=25
The above settings when combined can be used to increase the visibility of distant trees. Increasing the uGridDistantTreeRange setting by itself has no visible impact. Yet if you also increase the uGridDistantCount value as well, you will start to see trees further out towards the horizon, on mountain ranges for example. Very high values will reduce performance and dramatically increase level loading times. For example try a value of 200 for both to see the image quality and performance impact on your system.
uGridDistantTreeRangeCity=4
uGridDistantCountCity=4
The above settings work in much the same way as uGridDistantTreeRange and uGridDistantCount except they apply to tree visibility within cities.
fLandTextureTilingMult=2.0000 - Decreasing this value can reducing the obvious tile pattern which occurs on land textures, but unfortunately also distorts textures close to the character.
The next page continues the .ini tweaks.

